Object modeling and rendering are performed in many computer graphics applications such as CAD/CAM, computer animation and gaming, visualization systems, flight simulators, special effects, medical imaging, architectural visualization, virtual reality, etc.
In some applications, multiple level of detail (LOD) models of objects (typically 3-dimensional, but can be 2-dimensional) can be specified to satisfy various shot requirements. FIG. 1A illustrates a relatively un-detailed model 102 consisting of relatively few geometric primitives (e.g. polygons or triangles 106) while FIG. 1B illustrates a very detailed model 104 of the same object consisting of relatively many geometric primitives. The selection of which model 102, 104 to use in a shot can be based on, for example, the distance of the object in the scene from the viewer. Accordingly, as shown in FIG. 1C, when the object is relatively distant from the viewer and/or appears very small in the scene, un-detailed model 102 may be used, whereas when the object is relatively close up and/or occupies a large portion of the scene, detailed model 104 may be used. Since many copies of a model can be used in a scene, using level of detail can reduce memory requirements and the time it takes to render the scene.
As is known, rendering a scene including stored object models involves determining which objects are visible, i.e., the surfaces of objects that are not hidden from view by other objects. As should be apparent from above, whenever a scene includes an object having multiple LODs is encountered, the appropriate LOD needs to be determined. However, a problem arises in that different LODs may affect the visibility of various overlapping objects. Further, for certain types of object visibility determinations such as ray tracing, additional problems are encountered that have not been addressed in the prior art, such as how to account for child rays (e.g. shadow, refracted and reflected rays) spawned from an object having different LODs.